package com.yfs.cloud.service;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.yfs.cloud.authority.UserAuthority;
import com.yfs.cloud.entity.User;

/**
* @Company: 影法師工作室
* @Description: 用户服务接口 
* @author 影法師  
* @date 2020年8月25日 上午7:07:42 
* @version V1.0
 */
public interface UserService extends BaseService<User> {

	/**
	* @Description: 根据用户id封装此用户的角色和模块权限数据  
	* @author 影法師 
	* @date 2020年8月26日 下午12:54:38 
	* @version V1.0 
	* @param @param id
	* @param @return    
	* @return UserAuthority    
	* @throws
	 */
	public UserAuthority findUserAuthority(Long id);

	/**
	* @Description: 因为绑定手机号和既存账户导致的修改, 因为涉及多表操作, 所以要放在一个事务中
	* @author 影法師 
	* @date 2020年8月30日 上午8:38:55 
	* @version V1.0 
	* @param @param phone 手机号
	* @param @param username 账号 
	* @return void    
	* @throws
	 */
	public void modifyLeadByBindPhone(String phone, String username) throws Exception;

	/**
	* @Description: 因为绑定微信号和既存账户导致的修改, 因为涉及多表操作, 所以要放在一个事务中
	* @author 影法師 
	* @date 2020年8月30日 上午8:38:55 
	* @version V1.0 
	* @param @param openid 微信号
	* @param @param username 账号 
	* @return void    
	* @throws
	 */
	public void modifyLeadByBindWx(String openid, String username) throws Exception;

	/**
	* @Description: 根据角色id分页查询所有用户的账号+微信昵称+性别+角色名称
	* @author 影法師 
	* @date 2020年9月5日 下午9:30:16 
	* @version V1.0 
	* @param @param roleId
	* @param @return    
	* @return PageInfo<Map<String,String>>    
	* @throws
	 */
	public PageInfo<Map<String, String>> findPageUserByRoleIdAndWxNickname(Map<String, Object> params);

	/**
	* @Description: 根据用户id查询用户信息, 应用场景是登录接口仅仅返回jwt, 而有的时候要查询当前登录用户的详细信息, 而UserAuthority中是缺乏用户详情的(仅仅有用户的id), 所以就要调用本接口 
	* @author 影法師 
	* @date 2020年9月8日 下午3:00:49 
	* @version V1.0 
	* @param @param id
	* @param @return    
	* @return User    
	* @throws
	 */
	public User findOneById(Long id);
	
	public List<User> findListByRoleIds(Map<String, Object> params);
}
